home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xmcd-1.4 / libdi.d / scsipt.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-10  |  16.2 KB  |  501 lines

  1. /*
  2.  *   libdi - CD Audio Player Device Interface Library
  3.  *
  4.  *   Copyright (C) 1995  Ti Kan
  5.  *   E-mail: ti@amb.org
  6.  *
  7.  *   This program is free software; you can redistribute it and/or modify
  8.  *   it under the terms of the GNU General Public License as published by
  9.  *   the Free Software Foundation; either version 2 of the License, or
  10.  *   (at your option) any later version.
  11.  *
  12.  *   This program is distributed in the hope that it will be useful,
  13.  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  *   GNU General Public License for more details.
  16.  *
  17.  *   You should have received a copy of the GNU General Public License
  18.  *   along with this program; if not, write to the Free Software
  19.  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  *
  21.  */
  22. #ifndef __SCSIPT_H__
  23. #define __SCSIPT_H__
  24.  
  25. #ifdef DI_SCSIPT
  26.  
  27. #ifndef LINT
  28. static char *_scsipt_h_ident_ = "@(#)scsipt.h    5.9 95/01/27";
  29. #endif
  30.  
  31.  
  32. #define MAX_VENDORS        7    /* Max number of vendors */
  33.  
  34. /*
  35.  * Vendor-unique modules
  36.  *
  37.  * Undefine any of these (except VENDOR_SCSI2) to remove
  38.  * vendor-unique support for a particular vendor.  Removing
  39.  * unused vendor-unique modules can reduce the executable
  40.  * binary size and run-time memory usage.
  41.  */
  42. #define VENDOR_SCSI2        0    /* SCSI-2 mode */
  43. #define VENDOR_CHINON        1    /* Chinon vendor-unique mode */
  44. #define VENDOR_HITACHI        2    /* Hitachi vendor-unique mode */
  45. #define VENDOR_NEC        3    /* NEC vendor-unique mode */
  46. #define VENDOR_PIONEER        4    /* Pioneer vendor-unique mode */
  47. #define VENDOR_SONY        5    /* Sony vendor-unique mode */
  48. #define VENDOR_TOSHIBA        6    /* Toshiba vendor-unique mode */
  49.  
  50.  
  51. /* Data direction code */
  52. #define READ_OP            0    /* SCSI data-in */
  53. #define WRITE_OP        1    /* SCSI data-out */
  54.  
  55.  
  56. /* Read Sub-channel audio status */
  57. #define AUDIO_NOTVALID        0x00    /* audio status not valid */
  58. #define AUDIO_PLAYING        0x11    /* audio play in progress */
  59. #define AUDIO_PAUSED        0x12    /* audio play paused */
  60. #define AUDIO_COMPLETED        0x13    /* audio play successfully completed */
  61. #define AUDIO_FAILED        0x14    /* audio played stopped due to error */
  62. #define AUDIO_NOSTATUS        0x15    /* no audio status */
  63.  
  64.  
  65. /* SCSI command opcodes */
  66.  
  67. /* 6-byte commands */
  68. #define OP_S_TEST        0x00    /* test unit ready */
  69. #define OP_S_REZERO        0x01    /* rezero */
  70. #define OP_S_RSENSE        0x03    /* request sense */
  71. #define OP_S_SEEK        0x0b    /* seek */
  72. #define OP_S_INQUIR        0x12    /* inquiry */
  73. #define OP_S_MSELECT        0x15    /* mode select */
  74. #define OP_S_MSENSE        0x1a    /* mode sense */
  75. #define OP_S_START        0x1b    /* start/stop unit */
  76. #define OP_S_PREVENT        0x1e    /* prevent/allow medium removal */
  77.  
  78. /* 10-byte commands */
  79. #define OP_M_RDCAP        0x25    /* read capacity */
  80. #define OP_M_RDSUBQ        0x42    /* read subchannel */
  81. #define OP_M_RDTOC        0x43    /* read TOC */
  82. #define OP_M_RDHDR        0x44    /* read header */
  83. #define OP_M_PLAY        0x45    /* play audio */
  84. #define OP_M_PLAYMSF        0x47    /* play audio MSF */
  85. #define OP_M_PLAYTI        0x48    /* play audio track/index */
  86. #define OP_M_PLAYTR        0x49    /* play audio track relative */
  87. #define OP_M_PAUSE        0x4b    /* pause/resume */
  88.  
  89. /* 12-byte commands */
  90. #define OP_L_PLAY        0xa5    /* play audio */
  91. #define OP_L_PLAYTR        0xa9    /* play audio track relative */
  92.  
  93.  
  94. /* Data buffer lengths */
  95. #define SZ_RDSUBQ        48    /* max read sub-channel Q data size */
  96. #define SZ_RDTOC        804    /* max read TOC data size */
  97. #define SZ_TOCHDR        4    /* TOC header size */
  98. #define SZ_TOCENT        8    /* TOC per-track entry size */
  99. #define SZ_MSENSE        60    /* max mode sense/mode sel data size */
  100. #define SZ_RSENSE        18    /* max request sense data size */
  101.  
  102.  
  103. /* Mode sense/mode select page codes */
  104. #define PG_ERRECOV        0x01    /* error recovery parameters page */
  105. #define PG_DISCONN        0x02    /* disconn/conn parameters page */
  106. #define PG_CDROMCTL        0x0d    /* cd-rom control parameters page */
  107. #define PG_AUDIOCTL        0x0e    /* audio control parameters page */
  108. #define PG_ALL            0x3f    /* 0x01, 0x02, 0x0d and 0x0e */
  109.  
  110.  
  111. /* Read sub-channel format codes */
  112. #define SUB_ALL            0x00    /* sub-Q channel data */
  113. #define SUB_CURPOS        0x01    /* current CD-ROM position */
  114. #define SUB_CATNO        0x02    /* media catalog num (UPC/bar code) */
  115. #define SUB_ISRC        0x03    /* track ISRC code */
  116.  
  117.  
  118. /* Inquiry data misc definitions */
  119. #define DEV_ROM            0x05    /* ROM peripheral device type */
  120. #define DEV_CONNECTED        0x00    /* peripheral qualifier */
  121.  
  122.  
  123. /* The inquiry data structure */
  124. typedef struct inqry_data {
  125. #if _BYTE_ORDER_ == _L_ENDIAN_
  126.     unsigned int    type:5;        /* peripheral device type */
  127.     unsigned int    pqual:3;    /* peripheral qualifier */
  128.     unsigned int    qualif:7;    /* device type qualifier */
  129.     unsigned int    rmb:1;        /* removable media */
  130. #else    /* _BYTE_ORDER_ == _B_ENDIAN_ */
  131.     unsigned int    pqual:3;    /* peripheral qualifier */
  132.     unsigned int    type:5;        /* peripheral device type */
  133.     unsigned int    rmb:1;        /* removable media */
  134.     unsigned int    qualif:7;    /* device type qualifier */
  135. #endif    /* _BYTE_ORDER_ */
  136.  
  137.     unsigned int    ver:8;        /* SCSI version */
  138.     unsigned int    res1:8;        /* reserved */
  139.  
  140.     byte_t        len;        /* length of additional data */
  141.     byte_t        res2[3];    /* reserved */
  142.     byte_t        vendor[8];    /* vendor ID */
  143.     byte_t        prod[16];    /* product ID */
  144.     byte_t        revnum[4];    /* revision number */
  145. } inquiry_data_t;
  146.  
  147.  
  148. /* The Mode Sense/Mode Select data structures */
  149.  
  150. /* Block descriptor data structure */
  151. typedef struct blk_desc {
  152.     unsigned int    dens_code:8;    /* density code */
  153.     unsigned int    num_blks:24;    /* number of blocks */
  154.  
  155.     unsigned int    res:8;        /* reserved */
  156.     unsigned int    blk_len:24;    /* block length */
  157. } blk_desc_t;
  158.  
  159. /* Audio-parameters page data structure */
  160. typedef struct audio_pg {
  161. #if _BYTE_ORDER_ == _L_ENDIAN_
  162.     unsigned int    pg_code:6;    /* page code */
  163.     unsigned int    res:2;        /* reserved */
  164.     unsigned int    pg_len:8;    /* page length */
  165.     unsigned int    res1:1;        /* reserved */
  166.     unsigned int    sotc:1;        /* SOTC */
  167.     unsigned int    immed:1;    /* immediate */
  168.     unsigned int    res2:5;        /* reserved */
  169.     unsigned int    res3:8;        /* reserved */
  170.  
  171.     unsigned int    res4:16;    /* reserved */
  172.     unsigned int    audio_bps:16;    /* logical blocks per second */
  173.  
  174.     unsigned int    p0_ch_ctrl:4;    /* port 0 channel control */
  175.     unsigned int    res5:4;        /* reserved */
  176.     unsigned int    p0_vol:8;    /* port 0 volume */
  177.     unsigned int    p1_ch_ctrl:4;    /* port 1 channel control */
  178.     unsigned int    res6:4;        /* reserved */
  179.     unsigned int    p1_vol:8;    /* port 1 volume */
  180.  
  181.     unsigned int    p2_ch_ctrl:4;    /* port 2 channel control */
  182.     unsigned int    res7:4;        /* reserved */
  183.     unsigned int    p2_vol:8;    /* port 2 volume */
  184.     unsigned int    p3_ch_ctrl:4;    /* port 3 channel control */
  185.     unsigned int    res8:4;        /* reserved */
  186.     unsigned int    p3_vol:8;    /* port 3 volume */
  187. #else    /* _BYTE_ORDER_ == _B_ENDIAN_ */
  188.     unsigned int    res:2;        /* reserved */
  189.     unsigned int    pg_code:6;    /* page code */
  190.     unsigned int    pg_len:8;    /* page length */
  191.     unsigned int    res2:5;        /* reserved */
  192.     unsigned int    immed:1;    /* immediate */
  193.     unsigned int    sotc:1;        /* SOTC */
  194.     unsigned int    res1:1;        /* reserved */
  195.     unsigned int    res3:8;        /* reserved */
  196.  
  197.     unsigned int    res4:16;    /* reserved */
  198.     unsigned int    audio_bps:16;    /* logical blocks per second */
  199.  
  200.     unsigned int    res5:4;        /* reserved */
  201.     unsigned int    p0_ch_ctrl:4;    /* port 0 channel control */
  202.     unsigned int    p0_vol:8;    /* port 0 volume */
  203.     unsigned int    res6:4;        /* reserved */
  204.     unsigned int    p1_ch_ctrl:4;    /* port 1 channel control */
  205.     unsigned int    p1_vol:8;    /* port 1 volume */
  206.  
  207.     unsigned int    res7:4;        /* reserved */
  208.     unsigned int    p2_ch_ctrl:4;    /* port 2 channel control */
  209.     unsigned int    p2_vol:8;    /* port 2 volume */
  210.     unsigned int    res8:4;        /* reserved */
  211.     unsigned int    p3_ch_ctrl:4;    /* port 3 channel control */
  212.     unsigned int    p3_vol:8;    /* port 3 volume */
  213. #endif    /* _BYTE_ORDER_ */
  214. } audio_pg_t;
  215.  
  216. /* Mode Sense/Mode Select data structure */
  217. typedef struct mode_sense_data {
  218.     /* mode header */
  219.     unsigned int    data_len:8;    /* data length */
  220.     unsigned int    medium:8;    /* medium */
  221. #if _BYTE_ORDER_ == _L_ENDIAN_
  222.     unsigned int    speed:4;    /* speed */
  223.     unsigned int    buffered:3;    /* buffered */
  224.     unsigned int    wprot:1;    /* write protected */
  225. #else    /* _BYTE_ORDER_ == _B_ENDIAN_ */
  226.     unsigned int    wprot:1;    /* write protected */
  227.     unsigned int    buffered:3;    /* buffered */
  228.     unsigned int    speed:4;    /* speed */
  229. #endif    /* _BYTE_ORDER_ */
  230.     unsigned int    bdescr_len:8;    /* block descriptor length */
  231.  
  232.     byte_t        data[24];    /* block desc/page desc data */
  233. } mode_sense_data_t;
  234.  
  235.  
  236. /* Request Sense data structure */
  237. typedef struct req_sense_data {
  238. #if _BYTE_ORDER_ == _L_ENDIAN_
  239.     unsigned int    errcode:7;    /* error code */
  240.     unsigned int    valid:1;    /* valid bit */
  241.     unsigned int    segno:8;    /* segment number */
  242.     unsigned int    key:4;        /* sense key */
  243.     unsigned int    res:1;        /* reserved */
  244.     unsigned int    ili:1;        /* ILI */
  245.     unsigned int    eom:1;        /* end-of-medium */
  246.     unsigned int    fm:1;        /* filemark */
  247. #else    /* _BYTE_ORDER_ == _B_ENDIAN_ */
  248.     unsigned int    valid:1;    /* valid bit */
  249.     unsigned int    errcode:7;    /* error code */
  250.     unsigned int    segno:8;    /* segment number */
  251.     unsigned int    fm:1;        /* filemark */
  252.     unsigned int    eom:1;        /* end-of-medium */
  253.     unsigned int    ili:1;        /* ILI */
  254.     unsigned int    res:1;        /* reserved */
  255.     unsigned int    key:4;        /* sense key */
  256. #endif    /* _BYTE_ORDER_ */
  257.     unsigned int    info0:8;    /* information */
  258.  
  259.     unsigned int    info1:8;    /* information */
  260.     unsigned int    info2:8;    /* information */
  261.     unsigned int    info3:8;    /* information */
  262.     unsigned int     addl_len:8;    /* additional sense length */
  263.  
  264.     unsigned int    cmd_spec0:8;    /* command specific information */
  265.     unsigned int    cmd_spec1:8;    /* command specific information */
  266.     unsigned int    cmd_spec2:8;    /* command specific information */
  267.     unsigned int    cmd_spec3:8;    /* command specific information */
  268.  
  269.     unsigned int    code:8;        /* additional sense code */
  270.     unsigned int    qual:8;        /* additional sense code qualifier */
  271.     unsigned int    fruc:8;        /* field replaceable unit code */
  272.     unsigned int    key_spec0:8;    /* sense-key specific */
  273.  
  274.     unsigned int    key_spec1:8;    /* sense-key specific */
  275.     unsigned int    key_spec2:8;    /* sense-key specific */
  276.     unsigned int    pad1:16;    /* pad for alignment */
  277. } req_sense_data_t;
  278.  
  279.  
  280. /* Read subchannel Q data header */
  281. typedef struct subq_hdr {
  282.     byte_t        reserved;    /* reserved */
  283.     byte_t        audio_status;    /* audio status */
  284.     word16_t    subch_len;    /* subchannel data length */
  285. } subq_hdr_t;
  286.  
  287.  
  288. /* Subchannel Q data - format 01 (CD-ROM Current Position) */
  289. typedef struct subq_01 {
  290.     unsigned int    fmt_code:8;    /* format code */
  291. #if _BYTE_ORDER_ == _L_ENDIAN_
  292.     unsigned int    preemph:1;    /* preemphasis */
  293.     unsigned int    copyallow:1;    /* digital copy allow */
  294.     unsigned int    trktype:1;    /* 0=audio 1=data */
  295.     unsigned int    audioch:1;    /* 0=2ch 1=4ch */
  296.     unsigned int    adr:4;        /* ADR */
  297. #else    /* _BYTE_ORDER_ == _B_ENDIAN_ */
  298.     unsigned int    adr:4;        /* ADR */
  299.     unsigned int    audioch:1;    /* 0=2ch 1=4ch */
  300.     unsigned int    trktype:1;    /* 0=audio 1=data */
  301.     unsigned int    copyallow:1;    /* digital copy allow */
  302.     unsigned int    preemph:1;    /* preemphasis */
  303. #endif    /* _BYTE_ORDER_ */
  304.     unsigned int    trkno:8;    /* track number */
  305.     unsigned int    idxno:8;    /* index number */
  306.  
  307.     lmsf_t        abs_addr;    /* absolute address */
  308.     lmsf_t        rel_addr;    /* track-relative address */
  309. } subq_01_t;
  310.  
  311.  
  312. /* Read TOC command data header */
  313. typedef struct toc_hdr {
  314.     word16_t    data_len;    /* TOC data length */
  315.     byte_t        first_trk;    /* first track number */
  316.     byte_t        last_trk;    /* last track number */
  317. } toc_hdr_t;
  318.  
  319.  
  320. /* Read TOC command track descriptor */
  321. typedef struct toc_trk_descr {
  322.     unsigned int    res1:8;        /* reserved */
  323. #if _BYTE_ORDER_ == _L_ENDIAN_
  324.     unsigned int    preemph:1;    /* preemphasis */
  325.     unsigned int    copyallow:1;    /* digital copy allow */
  326.     unsigned int    trktype:1;    /* 0=audio 1=data */
  327.     unsigned int    audioch:1;    /* 0=2ch 1=4ch */
  328.     unsigned int    adr:4;        /* ADR */
  329. #else    /* _BYTE_ORDER_ == _B_ENDIAN_ */
  330.     unsigned int    adr:4;        /* ADR */
  331.     unsigned int    audioch:1;    /* 0=2ch 1=4ch */
  332.     unsigned int    trktype:1;    /* 0=audio 1=data */
  333.     unsigned int    copyallow:1;    /* digital copy allow */
  334.     unsigned int    preemph:1;    /* preemphasis */
  335. #endif    /* _BYTE_ORDER_ */
  336.     unsigned int    trkno:8;    /* track number */
  337.     unsigned int    res2:8;        /* reserved */
  338.  
  339.     lmsf_t        abs_addr;    /* absolute address */
  340. } toc_trk_descr_t;
  341.  
  342.  
  343. /* Vendor-unique module initialization jump table */
  344. typedef struct {
  345.     void        (*init)(void);    /* VU init function */
  346. } vuinit_tbl_t;
  347.  
  348.  
  349. /* Vendor-unique module entry jump table */
  350. typedef struct {
  351.     /* Vendor name string */
  352.     char        *vendor;
  353.  
  354.     /* Play audio function */
  355.     bool_t        (*playaudio)(byte_t, word32_t, word32_t,
  356.                      msf_t *, msf_t *, byte_t, byte_t);
  357.  
  358.     /* Pause/resume function */
  359.     bool_t        (*pause_resume)(bool_t);
  360.  
  361.     /* Start/stop function */
  362.     bool_t        (*start_stop)(bool_t, bool_t);
  363.  
  364.     /* Playback status function */
  365.     bool_t        (*get_playstatus)(curstat_t *, byte_t *);
  366.  
  367.     /* Playback volume function */
  368.     int        (*volume)(int, curstat_t *, bool_t);
  369.  
  370.     /* Channel routing function */
  371.     bool_t        (*route)(curstat_t *);
  372.  
  373.     /* Playback mute function */
  374.     bool_t        (*mute)(bool_t);
  375.  
  376.     /* Read TOC function */
  377.     bool_t        (*get_toc)(curstat_t *);
  378.  
  379.     /* Eject function */
  380.     bool_t        (*eject)(void);
  381.  
  382.     /* Module start function */
  383.     void        (*start)(void);
  384.  
  385.     /* Module halt function */
  386.     void        (*halt)(void);
  387. } vu_tbl_t;
  388.  
  389.  
  390.  
  391. /***** Additional include files *****/
  392.  
  393. /* OS interface library headers */
  394. #include "libdi.d/os_aix.h"        /* IBM AIX support header */
  395. #include "libdi.d/os_aux.h"        /* Apple A/UX support header */
  396. #include "libdi.d/os_dec.h"        /* DEC OSF/1 & Ultrix support header */
  397. #include "libdi.d/os_dgux.h"        /* Data General DG/UX support header */
  398. #include "libdi.d/os_frbsd.h"        /* FreeBSD support header */
  399. #include "libdi.d/os_hpux.h"        /* HP-UX support header */
  400. #include "libdi.d/os_irix.h"        /* SGI IRIX support header */
  401. #include "libdi.d/os_linux.h"        /* Linux support header */
  402. #include "libdi.d/os_odt.h"        /* SCO ODT support header */
  403. #include "libdi.d/os_sun.h"        /* SunOS support header */
  404. #include "libdi.d/os_svr4.h"        /* SVR4 support header */
  405.  
  406. /* If compiling on a non-supported OS, force demo-only mode */
  407. #if !defined(OS_MODULE) && !defined(DEMO_ONLY)
  408. #define DEMO_ONLY
  409. #endif
  410.  
  411. /* If demo-only, no need to compile in the vendor-unique modules */
  412. #ifdef DEMO_ONLY
  413. #ifdef VENDOR_CHINON
  414. #undef VENDOR_CHINON
  415. #endif
  416. #ifdef VENDOR_HITACHI
  417. #undef VENDOR_HITACHI
  418. #endif
  419. #ifdef VENDOR_NEC
  420. #undef VENDOR_NEC
  421. #endif
  422. #ifdef VENDOR_PIONEER
  423. #undef VENDOR_PIONEER
  424. #endif
  425. #ifdef VENDOR_SONY
  426. #undef VENDOR_SONY
  427. #endif
  428. #ifdef VENDOR_TOSHIBA
  429. #undef VENDOR_TOSHIBA
  430. #endif
  431. #endif    /* DEMO_ONLY */
  432.  
  433. /* Demo mode support header */
  434. #include "libdi.d/os_demo.h"
  435.  
  436. /* Vendor-unique library headers */
  437. #include "libdi.d/vu_chin.h"        /* Chinon vendor-unique header */
  438. #include "libdi.d/vu_hita.h"        /* Hitachi vendor-unique header */
  439. #include "libdi.d/vu_nec.h"        /* NEC vendor-unique header */
  440. #include "libdi.d/vu_pion.h"        /* Pioneer vendor-unique header */
  441. #include "libdi.d/vu_sony.h"        /* Sony vendor-unique header */
  442. #include "libdi.d/vu_tosh.h"        /* Toshiba vendor-unique header */
  443.  
  444.  
  445. /*
  446.  * Public functions
  447.  */
  448. extern void    scsipt_init(curstat_t *, di_tbl_t *);
  449. extern bool_t    scsipt_check_disc(curstat_t *);
  450. extern void    scsipt_status_upd(curstat_t *);
  451. extern void    scsipt_lock(curstat_t *, bool_t);
  452. extern void    scsipt_repeat(curstat_t *, bool_t);
  453. extern void    scsipt_shuffle(curstat_t *, bool_t);
  454. extern void    scsipt_load_eject(curstat_t *);
  455. extern void    scsipt_ab(curstat_t *);
  456. extern void    scsipt_sample(curstat_t *);
  457. extern void    scsipt_level(curstat_t *, byte_t, bool_t);
  458. extern void    scsipt_play_pause(curstat_t *);
  459. extern void    scsipt_stop(curstat_t *, bool_t);
  460. extern void    scsipt_prevtrk(curstat_t *);
  461. extern void    scsipt_nexttrk(curstat_t *);
  462. extern void    scsipt_previdx(curstat_t *);
  463. extern void    scsipt_nextidx(curstat_t *);
  464. extern void    scsipt_rew(curstat_t *, bool_t);
  465. extern void    scsipt_ff(curstat_t *, bool_t);
  466. extern void    scsipt_warp(curstat_t *);
  467. extern void    scsipt_route(curstat_t *);
  468. extern void    scsipt_mute_on(curstat_t *);
  469. extern void    scsipt_mute_off(curstat_t *);
  470. extern void    scsipt_start(curstat_t *);
  471. extern void    scsipt_icon(curstat_t *, bool_t);
  472. extern void    scsipt_halt(curstat_t *);
  473. extern char    *scsipt_mode(void);
  474. extern char    *scsipt_vers(void);
  475.  
  476. /*
  477.  * Functions for vendor-unique module use only
  478.  */
  479. extern bool_t    scsipt_rdsubq(byte_t *, byte_t, byte_t, int, bool_t);
  480. extern bool_t    scsipt_modesense(byte_t *, byte_t, byte_t);
  481. extern bool_t    scsipt_modesel(byte_t *, byte_t);
  482. extern bool_t    scsipt_inquiry(byte_t *, int);
  483. extern bool_t    scsipt_rdtoc(byte_t *, bool_t, int);
  484. extern bool_t    scsipt_tst_unit_rdy(void);
  485. extern bool_t    scsipt_playmsf(msf_t *, msf_t *);
  486. extern bool_t    scsipt_play10(word32_t, word32_t);
  487. extern bool_t    scsipt_play12(word32_t, word32_t);
  488. extern bool_t    scsipt_prev_allow(bool_t);
  489. extern bool_t    scsipt_start_stop(bool_t, bool_t);
  490. extern bool_t    scsipt_pause_resume(bool_t);
  491. extern bool_t    scsipt_play_trkidx(int, int, int, int);
  492.  
  493. #else
  494.  
  495. #define scsipt_init    NULL
  496.  
  497. #endif
  498.  
  499. #endif    /* __SCSIPT_H__ */
  500.  
  501.